Ruby 日記 28日目: splat演算子
#Ruby_日記 #2021-09-24
https://rex.libertyfish.co.jp/exam_histories/42141/user_answers/12f06abe-8e75-4a62-b22b-6f187e3a0aac
次のコードを実行するとどうなりますか
code:gold/ex28/main.rb
def foo(arg1:100, arg2:200)
puts arg1
puts arg2
end
option = {arg2: 900}
foo arg1: 200, *option
選択肢:
code:sh
200
900
code:sh
900
200
code:sh
100
200
エラーになる
解説:
Ruby 日記 14日目: キーワード引数とdouble splat演算子と似た問題だね〜
code:sh
# ruby gold/ex28/main.rb
gold/ex28/main.rb:8: syntax error, unexpected *
foo arg1: 200, *option
^
正解は「エラーになる」だね
/icons/hr.icon
splat演算子についての理解、個人的にはふわふわしていて、可変長引数として指定するときに使うよ〜くらいの理解
code:rb
def foo(*args)
p args
end
foo('a', 1, false) # => "a", 1, false
みたいな
あとはこんな感じで使えるよ、とか
code:ruby
*bar = 'a', 1, false
p bar.class # => Array
p bar # => "a", 1, false
まあこれは bar = 'a', 1, false でも同じ結果になるんだけどね...
そうだなぁ、あとは
code:rb
baz = 1, 2, 3
p 'a', 'b', baz, 'c' # => ["a", "b", 1, 2, 3, "c"]
p 'a', 'b', *baz, 'c' # => "a", "b", 1, 2, 3, "c"
みたいな
総じて、arrayを展開するような感じだな、という理解をしている
splat演算子についての公式ドキュメントはどこを見れば良いんだろうなぁ